#include<iostream>
using namespace std;
typedef pair<int, int> PII;
#define x first
#define y second
const int N = 1010;	
char g[N][N];
bool st[N][N];
int n;
bool flag;
int dx[] = { -1,0,1,0 };
int dy[] = { 0,1,0,-1 };
PII q[N * N];
//void bfs(int x, int y)
//{
//	q[0] = { x,y };
//	int hh = 0, tt = 0;
//	while (hh <= tt) {
//		PII t = q[hh++];
//		st[t.x][t.y] = 1;
//		if (g[t.x - 1][t.y] == '#' && g[t.x][t.y + 1] == '#'
//			&& g[t.x + 1][t.y] == '#' && g[t.x][t.y - 1] == '#') {
//			flag = 1;
//		}
//		for (int i = 0; i < 4; i++) {
//			int a = dx[i] + t.x;
//			int b = dy[i] + t.y;
//			if (a <= 0 || a > n || b <= 0 || b > n)continue;
//			if (g[a][b] == '.') continue;
//			if (st[a][b]) continue;
//			q[++tt] = { a,b };
//		}
//	}
//}

void dfs(int x, int y)
{
	st[x][y] = 1;
	if (g[x - 1][y] == '#' && g[x][y + 1] == '#'
		&& g[x + 1][y] == '#' && g[x][y - 1] == '#') {
		flag = 1;
	}
	for (int i = 0; i < 4; i++) {
		int a = dx[i] + x;
		int b = dy[i] + y;
		//if (a <= 0 || a > n || b <= 0 || b > n)continue;
		if (g[a][b] == '.') continue;
		if (st[a][b]) continue;
		dfs(a, b);
	}
	return;
}
int main()
{
	cin >> n;
	for (int i = 1; i < n + 1; i++) {
		for (int j = 1; j <= n; j++) {
			cin >> g[i][j];
		}
	}
	int ans = 0;
	for (int i = 1; i < n + 1; i++) {
		for (int j = 1; j < n + 1; j++) {
			if (g[i][j] == '#' && !st[i][j]) {
				flag = 0;
				//bfs(i, j);
				dfs(i, j);
				if (!flag) {
					ans++;
				}
			}
		}
	}
	cout << ans << endl;
	return 0;
}